//vuex插件中导入createStore函数
import { createStore } from "vuex";

//配置vuex的公告数据、公共函数等模块选项
//配置vuex的5个核心概念
const store =createStore({
    //存储公共数据的对象，类似于vue里的data
    state:{
        //人员信息数组
        plist:[],

        //保存注册信息的数组[先注册新账号，后登录新账号]
        user:[],

        imgList:[
            { id:1 , title:'缤纷彩虹曲奇饼' , imgURL:'img/1.jpg' , createTime:1698246169 , grounding:true , hot:16628 , sale:16980 , visits:14979  },
            { id:2 , title:'女士单肩手提包' , imgURL:'img/2.jpg' , createTime:1698247803 , grounding:false , hot : 15164, sale : 36690, visits : 36690 },
            { id:3 , title:'berko蛋糕' , imgURL:'img/3.jpg' , createTime:1698247912 , grounding:true , hot : 29014, sale : 28058, visits : 18436 },
            { id:4 , title:'巧克力甜甜圈' , imgURL:'img/4.jpg' , createTime:1698248025 , grounding:true , hot : 31181, sale : 16296, visits : 9224 },
            { id:5 , title:'室内小盆绿植盆栽' , imgURL:'img/5.jpg' , createTime:1698248075 , grounding:true , hot : 24051, sale : 22587, visits : 9337 },
            { id:6 , title:'粉红少女行李箱' , imgURL:'img/6.jpg' , createTime:1698248080 , grounding:true , hot : 18272, sale : 18798, visits : 9566 },
            { id:7 , title:'草莓水果沙拉' , imgURL:'img/7.jpg' , createTime:1698308075 , grounding:true , hot : 33329, sale : 24138, visits : 10718 },
            { id:8 , title:'牛油果的横切面' , imgURL:'img/8.jpg' , createTime:1798248075 , grounding:true , hot : 29742, sale : 23337, visits : 11651 },
            { id:9 , title:'工作间隙的一杯咖啡' , imgURL:'img/9.jpg' , createTime:1598248075 , grounding:true , hot : 18955, sale : 13707, visits : 5822 },
            { id:10 , title:'胺多酚女士背包' , imgURL:'img/10.jpg' , createTime:1498248080 , grounding:true , hot : 35385, sale : 16266, visits : 8667, },
            { id:11 , title:'Rapper' , imgURL:'img/11.jpg' , createTime:1660247575 , grounding:true , hot : 17305, sale : 11772, visits : 5559 },
            { id:12 , title:'田园风手提包' , imgURL:'img/12.jpg' , createTime:1660256075 , grounding:true , hot : 27757, sale : 18476, visits : 5289 },
            { id:13 , title:'颜艺满分的少女' , imgURL:'img/13.jpg' , createTime:1677247075 , grounding:true , hot : 115903, sale : 17153, visits : 4114 },
            { id:14 , title:'希腊·圣托里尼' , imgURL:'img/14.jpg' , createTime:1798248088 , grounding:true , hot : 11678, sale : 11088, visits : 5154 },
            { id:15 , title:'希腊·爱情海' , imgURL:'img/15.jpg' , createTime:1698987575 , grounding:true , hot : 1662, sale : 32106, visits : 31262 },
            { id:16 , title:'地中海风格的大门' , imgURL:'img/16.jpg' , createTime:1624638075 , grounding:true , hot : 15448, sale : 19066, visits : 16269 },
            { id:17 , title:'奶油粉色系小爱心' , imgURL:'img/17.jpg' , createTime:1688888075 , grounding:true , hot : 8006, sale : 19792, visits : 12213 },
            { id:18 , title:'慵懒风的美女' , imgURL:'img/18.jpg' , createTime:1698124578 , grounding:true , hot : 18004, sale : 28439, visits : 28439 },
            { id:19 , title:'时尚界的包包都这样装' , imgURL:'img/19.jpg' , createTime:1688248075 , grounding:true , hot:16291 , sale:21671 , visits:22657 },
            { id:10 , title:'洋娃娃般的欧洲少女' , imgURL:'img/20.jpg' , createTime:1618248075 , grounding:true , hot:16291 , sale:21671 , visits:22657 },
        ],

    },


    //共同点：mutations和actions存储操作函数
    //区别：mutations存储的同步函数（函数一个个按顺序执行），只有此处才能直接修改state存储的数据
    //所有同步函数都必须设置第一个参数state;其他参数可选
    mutations:{
        //添加数据的函数：state公共数据，obj组件提交过来的数据
        addlist(state , obj){
            //将数据提交给state里面的plist完成添加操作
            //JSON.parse(JSON.stringify(对象))：深拷贝，将括号里面的变量独立成另一个全新的地址
            //添加之前，现将本次添加的数据独立一个地址，然后再添加
            state.plist.push(JSON.parse(JSON.stringify(obj)));
            alert('添加成功')
        },
        //删除state的数据
        dellist(state,i){
            let bool = confirm('是否确认删除当前数据');
            if(bool){
                state.plist.splice(i,1);
                alert('删除成功');
            }else{
                alert('已取消操作');
            }
        },
        //替换新数据 datas参数：包括表单的数据和下标
        editlist(state,datas){
            let i=Number(datas.id);
            state.plist[i]=JSON.parse(JSON.stringify(datas.val));       
        },
        zhuce(state,obj){
            state.user.push(JSON.parse(JSON.stringify(obj)));
            alert('注册成功')
        }
    },
    //区别：action存储的异步函数（同时执行多个函数），不具备修改state对象的数据，只能作为调用mutations函数的接口
    actions:{},

    //存储对state的数据加工，类似于computed计算数学（如state存储了时间数，getter加工成日期格式数据）
    //不影响原来数据，只是在显示的时候进行优化
    getters:{},

    //模块，一般用于大型项目的功能划分。登录/注册/忘记密码等与用户信息相关的数据划分一个user模块
    //每一个独立的模块下，可以重新设置5个核心概念
    modules:{}
})

//导出
export default store;